# 总结
#  函数 和 类


# 函数
# 定义  语法
# 声明  和 调用

# 定义 语法
def funname(argument1,argument2):
    # parameter
    # argument
    pass
    return None

# 函数是  对于某一项功能的封装  --》 做什么事 --》 最小单位

# 函数切割了   变量的作用域
a = 10   #  全局变量  global

# 函数内部可以访问全局变量  ， 如果不加global关键字 ， 不可以修改全局变量

# 函数的参数：  位置参数，默认值参数b=2 ，不定参 arg* ,关键参数b = 3 <kew**>
                #   注意顺序
#  函数的参数怎么确定：
# 完成一个功能  需要哪些东西（原材料） --》 参数
# 函数的返回值 怎么确定

# 函数的运行结果 --》 返回值  --》 return 返回值
print(sum([1,2,3]))  #  1.一行运行sum函数并计算 ，2 print（返回值）

# 函数的嵌套定义

# 闭包 和装饰器
# 闭包 ： 生成器的底层实现  惰性求值

# 装饰器 作用：增强某一个函数的功能，不改变原函数功能
# def fun1():
#     print('fun1........')


def decorate(fun1):
    def inner():
        print('前置')
        res = fun1()
        print('后置')
        return res
    return inner

@decorate
def fun1():
    print('fun1........')

fun1()


























